package org.upo.eps.it.phama.struts.actionform;

import java.util.List;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.upo.eps.it.phama.bean.Almacen;
import org.upo.eps.it.phama.bean.Producto;
import org.upo.eps.it.phama.bean.Proveedor;
import org.upo.eps.it.phama.dao.ProveedorDAO;
import org.upo.eps.it.phama.dao.AlmacenDAO;
import org.upo.eps.it.phama.dao.ProductoDAO;

/**
 *
 * @author grupo 4
 */
public class ProductosActionForm extends ActionForm {

    private String opcion;

    private int id;    
    private String nombre;
    private String descripcion;
    private double coste;
    private double precio;
    private double iva;
    
    private int idProveedor;
    private Proveedor proveedor;
    private String nombreProveedor;
    private List<Proveedor> misProveedores;
    
    private int idAlmacen;
    private Almacen almacen;
    private String nombreAlmacen;
    private List<Almacen> misAlmacenes;
    
    private List<Producto> misProductos;
    private List<Producto> resultadoBusqueda;
    
    
    public ProductosActionForm() {
        super();
        this.misProductos = ProductoDAO.getProductos();
        this.misAlmacenes = AlmacenDAO.getAlmacenes();
        this.misProveedores = ProveedorDAO.getProveedor();
    }

    //<editor-fold defaultstate="collapsed" desc="getters & setters">
    public String getNombreProveedor() {
        return nombreProveedor;
    }

    public void setNombreProveedor(String nombreProveedor) {
        this.nombreProveedor = nombreProveedor;
    }

    public String getNombreAlmacen() {
        return nombreAlmacen;
    }

    public void setNombreAlmacen(String nombreAlmacen) {
        this.nombreAlmacen = nombreAlmacen;
    }
    
    
        public String getOpcion() {
        return opcion;
    }

    public void setOpcion(String opcion) {
        this.opcion = opcion;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getIdProveedor() {
        return idProveedor;
    }

    public void setIdProveedor(int idProveedor) {
        this.idProveedor = idProveedor;
    }

    public int getIdAlmacen() {
        return idAlmacen;
    }

    public void setIdAlmacen(int idAlmacen) {
        this.idAlmacen = idAlmacen;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public double getCoste() {
        return coste;
    }

    public void setCoste(double coste) {
        this.coste = coste;
    }

    public double getPrecio() {
        return precio;
    }

    public void setPrecio(double precio) {
        this.precio = precio;
    }

    public double getIva() {
        return iva;
    }

    public void setIva(double iva) {
        this.iva = iva;
    }

    public Proveedor getProveedor() {
        return proveedor;
    }

    public void setProveedor(Proveedor proveedor) {
        this.proveedor = proveedor;
    }

    public Almacen getAlmacen() {
        return almacen;
    }

    public void setAlmacen(Almacen almacen) {
        this.almacen = almacen;
    }

    public List<Producto> getMisProductos() {
        return misProductos;
    }

    public void setMisProductos(List<Producto> misProductos) {
        this.misProductos = misProductos;
    } 
    
    public List<Producto> getResultadoBusqueda() {
        return resultadoBusqueda;
    }

    public void setResultadoBusqueda(List<Producto> resultadoBusqueda) {
        this.resultadoBusqueda = resultadoBusqueda;
    }

    public List<Proveedor> getMisProveedores() {
        return misProveedores;
    }

    public void setMisProveedores(List<Proveedor> misProveedores) {
        this.misProveedores = misProveedores;
    }

    public List<Almacen> getMisAlmacenes() {
        return misAlmacenes;
    }

    public void setMisAlmacenes(List<Almacen> misAlmacenes) {
        this.misAlmacenes = misAlmacenes;
    }
    //</editor-fold>
    /**
     * This is the action called from the Struts framework.
     *
     * @param mapping The ActionMapping used to select this instance.
     * @param request The HTTP Request we are processing.
     * @return
     */
    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (opcion.equals("grabar") || opcion.equals("modificar")) {
            if (nombre == null || nombre.equals("")) {
                errors.add("nombre", new ActionMessage("error.required", "nombre"));
            }
            if (descripcion == null || descripcion.equals("")) {
                errors.add("descripcion", new ActionMessage("error.required", "descripcion"));
            }
            if (precio <= 0){
                errors.add("precio", new ActionMessage("errors.invalid", "precio"));
            }
            if (coste <= 0){
                errors.add("coste", new ActionMessage("errors.invalid", "coste"));
            }
            if (iva <= 0){
                errors.add("iva", new ActionMessage("errors.invalid", "iva"));
            }
            if (idAlmacen <= 0){
                errors.add("almacen", new ActionMessage("error.required", "almacen"));
            }
            if (idProveedor <= 0){
                errors.add("proveedor", new ActionMessage("error.required", "proveedor"));
            }
        }

        return errors;
    }
}
